import request from '@/utils/request'

/**
 * 获取系统设置列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @param {string} [params.key] 设置键名
 * @param {string} [params.name] 设置名称
 * @param {string} [params.group] 设置分组
 * @returns {Promise}
 */
export function getSettingList(params) {
  return request({
    url: '/system/setting/list',
    method: 'get',
    params
  })
}

/**
 * 获取系统设置详情
 * @param {number} id 设置ID
 * @returns {Promise}
 */
export function getSettingDetail(id) {
  return request({
    url: `/system/setting/${id}`,
    method: 'get'
  })
}

/**
 * 获取系统设置分组列表
 * @returns {Promise}
 */
export function getSettingGroups() {
  return request({
    url: '/system/setting/groups',
    method: 'get'
  })
}

/**
 * 获取指定分组的系统设置
 * @param {string} group 分组名称
 * @returns {Promise}
 */
export function getGroupSettings(group) {
  return request({
    url: `/system/setting/group/${group}`,
    method: 'get'
  })
}

/**
 * 创建系统设置
 * @param {Object} data 设置数据
 * @param {string} data.key 设置键名
 * @param {string} data.name 设置名称
 * @param {string} data.value 设置值
 * @param {string} data.group 设置分组
 * @param {number} data.type 设置类型(1:文本,2:数字,3:布尔,4:数组,5:对象)
 * @param {string} data.description 设置描述
 * @param {number} data.sort 排序号
 * @returns {Promise}
 */
export function createSetting(data) {
  return request({
    url: '/system/setting',
    method: 'post',
    data
  })
}

/**
 * 更新系统设置
 * @param {number} id 设置ID
 * @param {Object} data 设置数据
 * @returns {Promise}
 */
export function updateSetting(id, data) {
  return request({
    url: `/system/setting/${id}`,
    method: 'put',
    data
  })
}

/**
 * 批量更新系统设置
 * @param {Array} data 设置数据数组
 * @returns {Promise}
 */
export function batchUpdateSettings(data) {
  return request({
    url: '/system/setting/batch',
    method: 'put',
    data
  })
}

/**
 * 删除系统设置
 * @param {number} id 设置ID
 * @returns {Promise}
 */
export function deleteSetting(id) {
  return request({
    url: `/system/setting/${id}`,
    method: 'delete'
  })
}

/**
 * 获取系统设置值(根据键名)
 * @param {string} key 设置键名
 * @returns {Promise}
 */
export function getSettingByKey(key) {
  return request({
    url: `/system/setting/key/${key}`,
    method: 'get'
  })
}

/**
 * 获取系统设置选项
 * @returns {Promise}
 */
export function getSettingOptions() {
  return request({
    url: '/system/setting/options',
    method: 'get'
  })
}

/**
 * 获取系统设置类型选项
 * @returns {Array} 系统设置类型选项
 */
export function getSettingTypeOptions() {
  return [
    { value: 1, label: '文本' },
    { value: 2, label: '数字' },
    { value: 3, label: '布尔' },
    { value: 4, label: '数组' },
    { value: 5, label: '对象' }
  ]
} 